package com.xing.crm.web.controller;

import com.xing.crm.pojo.PageResult;
import com.xing.crm.pojo.ProProductPoJo;
import com.xing.crm.pojo.Result;
import com.xing.crm.service.ProCategoryService;
import com.xing.crm.service.ProProductService;

import java.util.HashMap;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

/** 商品管理
 * @author Mr.L
 * @version V1.0
 * @date 2021年07月21日 17:37
 */
@Controller
@RequestMapping({"/product"})
public class ProProductController
{
	@Resource
	private ProProductService productService;
	@Resource
	private ProCategoryService proCategoryService;
	@Value("${spring.mvc.static-path-pattern}")
	private String imgUriPrefix;
	///////////////////////////////////////////////页面////////////////////////////////////////////////////
	///////////////////////////////////////////////页面////////////////////////////////////////////////////
	///////////////////////////////////////////////页面////////////////////////////////////////////////////
	//列表页
	@RequestMapping({"/listPage"})
	public String list(Model model)
	{
		model.addAttribute("categories", this.proCategoryService.findAllCategories());
		return "admin/product/list";
	}
	//编辑页
	@RequestMapping({"/editPage"})
	public String edit(Model model, Integer id)
	{
		if (id != null)
		{
			ProProductPoJo productPoJo = this.productService.detail(id);
			productPoJo.setFilesPath(this.productService.allFiles(id));
			model.addAttribute("product", productPoJo);
		}
		model.addAttribute("uriPrefix", pathSub());
		model.addAttribute("categories", this.proCategoryService.findAllCategories());
		return "admin/product/edit";
	}
	//详情页
	@RequestMapping({"/detailPage"})
	public String detail(Model model, Integer id)
	{
		ProProductPoJo productPoJo = null;
		if (id != null)
		{
			productPoJo = this.productService.detail(id);
			productPoJo.setFilesPath(this.productService.allFiles(id));
		}
		model.addAttribute("uriPrefix", pathSub());
		model.addAttribute("product", productPoJo);
		return "admin/product/detail";
	}
	
	///////////////////////////////////////////////数据////////////////////////////////////////////////////
	///////////////////////////////////////////////数据////////////////////////////////////////////////////
	///////////////////////////////////////////////数据////////////////////////////////////////////////////
	///////////////////////////////////////////////数据////////////////////////////////////////////////////
	
	//列表数据
	@ResponseBody
	@RequestMapping({"/list"})
	public PageResult<ProProductPoJo> list(
			ProProductPoJo productPoJo,
			@RequestParam(required = false, defaultValue = "1") Integer page,
			@RequestParam(required = false, defaultValue = "10") Integer limit
	)
	{
		return this.productService.list(productPoJo, page, limit);
	}
	
	//编辑、创建接口
	@RequestMapping({"/edit"})
	@ResponseBody
	public Map<String, Object> edit(ProProductPoJo productPoJo)
	{
		return this.productService.edit(productPoJo);
	}
	
	//删除
	@RequestMapping({"/delete"})
	@ResponseBody
	public Map<String, Object> delete(Integer id)
	{
		return this.productService.delete(id);
	}
	
	
	//取得单个数据，todo这个不知他妈用在哪的??????
	@RequestMapping("/get")
	@ResponseBody
	public Map<String, Object> get(Integer id) {
		Map result = new HashMap(0);
		result.put("code", 0);
		result.put("msg", "查询成功");
		ProProductPoJo productPoJo = null;
		try {
			if (id != null)
			{
				productPoJo = this.productService.detail(id);
				productPoJo.setFilesPath(this.productService.allFiles(id));
			}
		} catch (Exception e) {
			result.put("err", e.getMessage());
			result.put("code", -1);
			result.put("msg", "查询失败");
		}
		result.put("data", productPoJo);
		return result;
	}
	
	private String pathSub() {
		if(imgUriPrefix != null) {
			return imgUriPrefix.replace("/**", "");
		}
		return "";
	}
	
	//排序
	@RequestMapping({"/sort"})
	@ResponseBody
	public Result sort(ProProductPoJo proProductPoJo){
		return productService.sort(proProductPoJo);
	}
	
	//切换显示,
	@RequestMapping({"/toggleShow"})
	@ResponseBody
	public Result toggleShow(Integer id){
		return productService.toggleShow(id);
	}
}
